package jp.aegif.nemaki.rest;
import java.util.concurrent.locks.Lock;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.stereotype.Component;
import jp.aegif.nemaki.util.cache.NemakiCachePool;
import jp.aegif.nemaki.util.lock.ThreadLockService;
@Component
@Path("/repo/{repositoryId}/cache/")
public class CacheResource extends ResourceBase{
private NemakiCachePool nemakiCachePool;
private ThreadLockService threadLockService;
@DELETE
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public String delete(@PathParam("repositoryId") String repositoryId, @PathParam("id") String objectId,
@Context HttpServletRequest httpRequest) {
boolean status = true;
JSONObject result = new JSONObject();
JSONArray errMsg = new JSONArray();
Lock lock = threadLockService.getWriteLock(repositoryId, objectId);
try{
lock.lock();
nemakiCachePool.get(repositoryId).removeCmisAndContentCache(objectId);
}finally{
lock.unlock();
}
result = makeResult(status, result, errMsg);
return result.toJSONString();
}
public void setNemakiCachePool(NemakiCachePool nemakiCachePool) {
this.nemakiCachePool = nemakiCachePool;
}
public void setThreadLockService(ThreadLockService threadLockService) {
this.threadLockService = threadLockService;
}
}